"""
@author: xxw
@file: homework_使用装饰器.py
@time: 2023/6/13 16:53
"""

import pymysql
import redis

#连接redis
r = redis.Redis(host='192.168.116.129', port=6379, db=2, decode_responses=True)

# 连接mysql
db = pymysql.connect(host='192.168.116.129',
                     user='sc',
                     password='123456',
                     database='sc')

#缓存装饰器
def cache(func):
    def inner(id):
        if r.hkeys(id):
            print("通过redis查询。。。")
            return  id,r.hget(stu_id, 'name'),r.hget(stu_id, 'age'),r.hget(stu_id, 'address')
        else:
            data = func(id)
            print("写入redis缓存")
            r.hset(stu_id, 'name', data[1])
            r.hset(stu_id, 'age', data[2])
            r.hset(stu_id, 'address', data[3])
            return data
    return inner
#查询相应的id学生信息，并返回
@cache
def get_stuinfo(id):
    print("通过mysql查询")
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()

    # 使用 execute()  方法执行 SQL 查询
    cursor.execute(f"select * from StuInfo where id={id}")
    data = cursor.fetchone()
    return data

stu_id = input("请输入要查询的学生id:")
result = get_stuinfo(stu_id)
print(result)
print(f"学生姓名为:{result[1]}")
print(f"学生年龄为:{result[2]}")
print(f"学生地址为:{result[3]}")


